﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace Twodi.Input
{
    public class LocalInput : GameComponent
    {
        /// <summary>
        /// Objeto que contem informações de input do mouse, utilizando dois estados como meio de controle.
        /// </summary>
        public virtual MouseInput Mouse
        {
            get;
            private set;
        }

        /// <summary>
        /// Objeto que contem informações de input do teclado, utilizando dois estados como meio de controle.
        /// </summary>
        public virtual KeyboardInput Keyboard
        {
            get;
            private set;
        }

        /// <summary>
        /// Construtor padrão.
        /// </summary>
        /// <param name="game">Jogo.</param>
        public LocalInput(Game game)
            : base(game)
        {
            Mouse = new MouseInput(game);
            Keyboard = new KeyboardInput(game);
        }

        /// <summary>
        /// Atualiza os objetos de mouse e teclado.
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(GameTime gameTime)
        {
            if (Mouse.Enabled) Mouse.Update(gameTime);
            if (Keyboard.Enabled) Keyboard.Update(gameTime);
        }

        /// <summary>
        /// Habilitar inputs de mouse e teclado.
        /// </summary>
        public void Enable()
        {
            Mouse.Enabled = true;
            Keyboard.Enabled = true;
        }

        /// <summary>
        /// Desabilitar inputs de mouse e teclado.
        /// </summary>
        public void Disable()
        {
            Mouse.Enabled = false;
            Keyboard.Enabled = false;
        }
    }
}
